//
// Created by 11510 on 2024/6/18.
//
#include <iostream>

using namespace std;
/**
 * 抽象类
 */
class A {
public:
    virtual void print() = 0;

    virtual void display() = 0;
};

/**
 * 抽象类
 */
class B : public A {
public:
    virtual void print() override {
        cout << "B::print()" << endl;
    }
};
/**
 * 抽象类
 */
class C : public A {
public:
    virtual void display() override {
        cout << "C::display()" << endl;
    }

};

/**
 * 可实例化
 */
class D:public C{
    virtual void print() override{
        cout << "D::print()" << endl;
    }
};
void test0() {
    /*
     * 抽象类A不可实例化
     */
//    A a;    /* error */
//    B b;    /* error */
//    C c;

    /* 只要有一个纯虚函数没有实现就不能实例化 */
    D d;
    A *pa2 = &d;
    pa2->print();
    pa2->display();
}

int main() {
    test0();
}